Window Manager Configuration Audit

Date: 2026-10-16. Scope: Openbox, bspwm, i3, Sway, Awesome, Qtile, Herbstluftwm, Fluxbox, IceWM, and Enlightenment integration files. Includes package profiles, hooks, user and system configuration, shortcuts, panels, menus, and shared scripts. Earlier network/printer changes remain in the same local work set.

Issues Fixed

Component

Fixes

Sessions

Conditional launcher reuses the existing D-Bus bus; hooks accept absolute paths, preserve arguments, and migrate configurations previously wrapped in dbus-run-session. IceWM handles both possible session filenames.

Common startup

Launcher uses flock to prevent concurrent starts; tray helper no longer searches other processes’ command lines for any occurrence of the program name.

Openbox

Shared PolicyKit agent; Tint2 autostart removal is limited to the Openbox hook and no longer affects other images through the cache script.

bspwm

Removed obsolete sxhkd bspc pointer shortcuts that captured the same buttons as pointer_actionN; native move/resize controls remain. Polybar now has a real tray.

i3

Reload no longer repeatedly launches the compositor, notifications, or Conky; tray also works when no monitor is marked primary. Removed shortcut that interfered with Super + right-click resize.

Sway

Fixed region capture with Slurp/Grim; Waybar starts without incorrectly splitting commands at ;. Shared session menu in the panel; network indicator, USB, and startup notifier. PolicyKit agent installed; lock before suspend and D-Bus activation environment updated. Native mouse resize remains.

Herbstluftwm

POSIX expressions replace unsupported (?i); removed Super+H conflict, repeated tray-helper invocation, and global daemon restarts. Polybar now has a tray.

Fluxbox

Snapping uses the existing ResizeTo command and TopLeft/TopRight anchors. Enabled local remote actions used to exit/reconfigure the session.

IceWM

Fixed ignored preference names: SnapMove, TaskBarShowMailboxStatus, TaskBarShowCPUStatus, and TaskBarShowWindowListMenu. Removed nonexistent height/quick-switch options; height remains in the theme. Browser no longer depends on x-www-browser.

Awesome

PolicyKit agent starts with the session; avoids running Dunst alongside Awesome’s native notifications; dialogs float by type. Compositor/Conky use the shared launcher.

Qtile

PolicyKit agent starts with the session; applications can request fullscreen. Compositor/notifications/Conky use the shared launcher.

Enlightenment

Reviewed supplied files, retaining native window management, menus, and notifications. Session uses the same conditional D-Bus launcher.

Menus

Honor OnlyShowIn, NotShowIn, TryExec, and LC_ALL. .desktop code expansion preserves arguments with spaces, names, icons, paths, and literal percent signs.

Audio and session

WM handles multimedia keys without competing Volumeicon shortcuts. Session menu limits process searches/signals to the user and prefers current-session IPC; Wayland locking has priority.

Validation Performed

  • Full pytest suite, including concurrency, session-file migration, menu arguments/visibility, image composition, and wsdd socket tests.

  • Shell script and hook syntax, Python and XML checks; comparison of duplicate skel/XDG defaults where they should match.

  • Native parsers from cached Void packages: i3 4.25.1, Awesome 4.3, and Sway 1.12. Sway was checked with the headless backend, Pixman renderer, and local wallpaper equivalent to the installed ISO path.

  • Herbstluftwm 0.9.6 and bspwm 0.9.12: settings/rules applied through IPC in a private Xvfb session, without starting autostart programs.

  • Openbox 3.6.1: private startup with Pepvoid configuration and theme.

  • IceWM 4.0: preferences loaded by native parser. Fluxbox 1.3.7: native command inventory and private startup with temporary copies. Missing resources/defaults in the test environment are not syntax errors in the image.

  • Qtile: Python syntax and API review against cached package 0.37.1; no full Qtile session was run. Enlightenment: integration files reviewed; no full session was run.

Validation Requiring a Real Graphical Image

This audit does not prove the absence of all bugs or replace testing every ISO. The full login/logout, reload, authentication, click/drag, multi-monitor, suspend/resume, and tray-application paths still need testing on real hardware. Audio, battery, Bluetooth, Windows discovery, and printing require available devices/network.

Priorities for that test: start each WM, reload it twice and confirm there is only one instance of each applet/panel; move/resize windows; authenticate in an administrative prompt; test sound and suspend; open an SMB share and print a test page. Network steps are also documented in docs/network-shares-and-printing.md.